﻿using System;

namespace SharpSqlAnalyzer.nodes
{
	// Token: 0x02000301 RID: 769
	public class TJoinItem : TParseTreeNode
	{
		// Token: 0x17000638 RID: 1592
		// (get) Token: 0x06001B4C RID: 6988 RVA: 0x0032F1BD File Offset: 0x0032D3BD
		// (set) Token: 0x06001B4D RID: 6989 RVA: 0x0032F1C5 File Offset: 0x0032D3C5
		public virtual TJoin Join
		{
			get
			{
				return this.join;
			}
			set
			{
				this.join = value;
			}
		}

		// Token: 0x17000639 RID: 1593
		// (get) Token: 0x06001B4E RID: 6990 RVA: 0x0032F1CE File Offset: 0x0032D3CE
		// (set) Token: 0x06001B4F RID: 6991 RVA: 0x0032F1D6 File Offset: 0x0032D3D6
		public EJoinHint JoinHint
		{
			get
			{
				return this._joinHint;
			}
			set
			{
				this._joinHint = value;
			}
		}

		// Token: 0x1700063A RID: 1594
		// (get) Token: 0x06001B50 RID: 6992 RVA: 0x0032F1DF File Offset: 0x0032D3DF
		// (set) Token: 0x06001B51 RID: 6993 RVA: 0x0032F1E7 File Offset: 0x0032D3E7
		public virtual EJoinType JoinType
		{
			get
			{
				return this.joinType;
			}
			set
			{
				this.joinType = value;
			}
		}

		// Token: 0x1700063B RID: 1595
		// (get) Token: 0x06001B52 RID: 6994 RVA: 0x0032F1F0 File Offset: 0x0032D3F0
		// (set) Token: 0x06001B53 RID: 6995 RVA: 0x0032F1F8 File Offset: 0x0032D3F8
		public virtual TTable Table
		{
			get
			{
				return this.table;
			}
			set
			{
				this.table = value;
			}
		}

		// Token: 0x1700063C RID: 1596
		// (get) Token: 0x06001B55 RID: 6997 RVA: 0x0032F20A File Offset: 0x0032D40A
		// (set) Token: 0x06001B54 RID: 6996 RVA: 0x0032F201 File Offset: 0x0032D401
		public virtual int Kind
		{
			get
			{
				return this.kind;
			}
			set
			{
				this.kind = value;
			}
		}

		// Token: 0x1700063D RID: 1597
		// (get) Token: 0x06001B57 RID: 6999 RVA: 0x0032F21B File Offset: 0x0032D41B
		// (set) Token: 0x06001B56 RID: 6998 RVA: 0x0032F212 File Offset: 0x0032D412
		public virtual TObjectNameList UsingColumns
		{
			get
			{
				return this.usingColumns;
			}
			set
			{
				this.usingColumns = value;
			}
		}

		// Token: 0x1700063E RID: 1598
		// (get) Token: 0x06001B59 RID: 7001 RVA: 0x0032F22C File Offset: 0x0032D42C
		// (set) Token: 0x06001B58 RID: 7000 RVA: 0x0032F223 File Offset: 0x0032D423
		public virtual TExpression OnCondition
		{
			get
			{
				return this.onCondition;
			}
			set
			{
				this.onCondition = value;
			}
		}

		// Token: 0x06001B5A RID: 7002 RVA: 0x0032F234 File Offset: 0x0032D434
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x06001B5B RID: 7003 RVA: 0x0032F244 File Offset: 0x0032D444
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			if (this.Table != null)
			{
				this.Table.acceptChildren(v);
			}
			else if (this.Join != null)
			{
				this.Join.acceptChildren(v);
			}
			if (this.OnCondition != null)
			{
				this.OnCondition.acceptChildren(v);
			}
			if (this.UsingColumns != null)
			{
				this.UsingColumns.acceptChildren(v);
			}
			v.postVisit(this);
		}

		// Token: 0x040019ED RID: 6637
		private int kind;

		// Token: 0x040019EE RID: 6638
		private TJoin join;

		// Token: 0x040019EF RID: 6639
		private TTable table;

		// Token: 0x040019F0 RID: 6640
		private EJoinHint _joinHint;

		// Token: 0x040019F1 RID: 6641
		private TObjectNameList usingColumns;

		// Token: 0x040019F2 RID: 6642
		private TExpression onCondition;

		// Token: 0x040019F3 RID: 6643
		private EJoinType joinType;
	}
}
